package com.atguigu.gmall.feign.product;

import com.atguigu.gmall.feign.product.fallback.SkuInfoFeignClientFallback;
import com.atguigu.gmall.model.product.SkuImage;
import com.atguigu.gmall.model.product.SkuInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@RequestMapping("/api/inner")
@FeignClient(name = "service-product",fallback = SkuInfoFeignClientFallback.class)  //同时就是这个组件的名字 service-product
//都是以组件为单位配置的
//1、扫描到这个feign客户端以后，cloud一看 name叫 service-product（未来要调用的微服务和当前组件的名字），
//2、所有feign组件的配置会被保存在一个Map中；
//Map<String,FeignConfiguration>  map.put("service-product",options)

//两个不同的feignclient用了同一个名字；就需要配置spring.main.allow-bean-definition-overriding=true
public interface SkuInfoFeignClient {

    @PostMapping("/batch/getPrice")
    Map<Long,BigDecimal> batchGetSkuPrice(@RequestBody List<Long> skuIdList);

    ///sku/detail/{skuId}
    @GetMapping("/skuinfo/{skuId}")
    SkuInfo getSkuInfo(@PathVariable("skuId")Long skuId);

    @GetMapping("/sku/price/{skuId}")
    BigDecimal getSkuPrice(@PathVariable("skuId")Long skuId);

    @GetMapping("/skuinfo/images/{skuId}")
    List<SkuImage> skuImageList(@PathVariable("skuId")Long skuId);

    @GetMapping("/tmpsave/skuids")
    String getAllSkuIds();


}
